# 导入VectorStoreIndex和Document类，用于向量存储和文档表示
from llama_index.core import VectorStoreIndex, Document

# 导入VectorIndexRetriever类，用于向量检索
from llama_index.core.retrievers import VectorIndexRetriever

# 导入RetrieverQueryEngine类，用于基于检索器的查询引擎
from llama_index.core.query_engine import RetrieverQueryEngine

# 定义一个包含示例文本的列表
sample_texts = [
    "响应合成器负责将检索到的信息整合成最终答案。",
    "不同的响应模式适用于不同的应用场景。",
    "refine模式适合需要详细回答的场景。",
    "compact模式适合处理大量文本信息。",
    "tree_summarize模式适合生成文档摘要。",
]

# 将每个示例文本包装成Document对象，组成文档列表
documents = [Document(text=text) for text in sample_texts]
# 通过文档列表创建向量存储索引
index = VectorStoreIndex.from_documents(documents)

# 创建向量检索器，设置检索时返回最相似的5条结果
retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=5,
)
response_modes = ["refine", "compact", "tree_summarize"]
for mode in response_modes:
    # 创建基于当前检索器和响应模式的查询引擎
    query_engine = RetrieverQueryEngine.from_args(retriever, response_mode=mode)
    response = query_engine.query("响应合成器有什么用?")
    print(f"mode:{mode}, {response}")
